本篇為介紹邏輯運算子,並搭配if做解釋。
邏輯運算子的短路特性
:
若單看運算子左運算元,就可以推斷出整個結果時,此時會略過右運算元
if結構:當符合條件後為true,開始執行碼;不符合條件為false,不動作。
if (條件){
執行碼;
}
不一定要是布林值
,也可以是物件
或字串
。因為裡面的值會被 JS 自動轉型
;條件為(a > 5),代表a小於5不運作,若寫成(0),則會直接不運作。Falsy
:0、NaN、'' (空字串)、false、null、undefinedTruthy
:除了Falsy以外都是。> 'left' && 'right';
'right' //回傳值:左運算元非空字串,會當作結果成立,所以再判斷右運算元,也非空字串,所以判斷整個 && 成立,由於是停在第二個運算元,所以傳回 'right'。
> 0 && 'right';
0 //回傳值:會被當作不成立,此時不用判斷右運算元,就可判斷整個 && 運算不成立,所以直接傳回 0。
> 'left' && 0;
0 //回傳值:由於左運算元非空字串,會當作結果成立,所以再判斷右運算元為 0,所以當作不成立,整個&&運算此時確認不成立,傳回0。
>
var a = 1 ;
var b = 2 ;
var c = 0 ;
console.log(a && b && c); //0
試解:
if( 0 || 1 ){};
運作方式:
var a = 0 ;
var b = 1 ;
console.log(0 || 1)//回傳1,非true或是false。
function doSome(arg) {
var option = arg || 'default';
return option;
}
console.log(doSome()); // default
console.log(doSome('caterpillar')); // caterpillar
解:
回傳值default:
先找出arg || 'default'是否成立。
先判斷|| 的左側arg || 'default',因無參數填入函式,arg不成立。
再判斷|| 的右側'default','default'為字串不屬於falsy,成立並回傳值default。
回傳值caterpillar:
先找出arg || 'default'是否成立。
先判斷|| 的左側arg || 'default',因有參數填入函式,arg成立,傳回值caterpillar。
var a = 1 ;
var b = 2 ;
var c = 0 ;
console.log(c || c && c || a); //1
解:
if( !0 ){};
運作方式:
let age =30;
if(age = 18){
console.log("符合條件") //會印出符合條件
};
因為(age = 18) 的結果是18,不屬於falsy家族
且(age = 18)等同18
參考資料: